wayland: Scale up wl_egl_window according to window scale
authorJonas Ådahl <jadahl@gmail.com>
Tue, 24 Feb 2015 09:20:22 +0000 (17:20 +0800)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 25 Feb 2015 01:22:03 +0000 (20:22 -0500)
In order to support window scales for EGL windows, resize the
wl_egl_window to the window dimension multiplied with the window scale,
just as with SHM window buffers.

https://bugzilla.gnome.org/show_bug.cgi?id=745076

gdk/wayland/gdkwindow-wayland.c

index 547aca51ac2ea4083c587f354fdf3bf4f1743125..b5f048afcd6dbfec52c0af0b688a4ae29ad5ae61 100644 (file)
@@ -181,7 +181,13 @@ gdk_wayland_window_update_size (GdkWindow *window,
   impl->scale = scale;
 
   if (impl->egl_window)
-    wl_egl_window_resize (impl->egl_window, width, height, 0, 0);
+    {
+      wl_egl_window_resize (impl->egl_window,
+                            width * scale,
+                            height * scale,
+                            0, 0);
+      wl_surface_set_buffer_scale (impl->surface, scale);
+    }
 
   area.x = 0;
   area.y = 0;
@@ -2262,8 +2268,9 @@ gdk_wayland_window_get_wl_egl_window (GdkWindow *window)
     {
       impl->egl_window =
         wl_egl_window_create(impl->surface,
-                             impl->wrapper->width,
-                             impl->wrapper->height);
+                             impl->wrapper->width * impl->scale,
+                             impl->wrapper->height * impl->scale);
+      wl_surface_set_buffer_scale (impl->surface, impl->scale);
     }
 
   return impl->egl_window;